#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
	int i; //Variable que almacena el numero de procesos creados
	int n=0; //Variable que controla el numero de procesos por crear
	int tuberia[2]; //Variable para almacenar los descriptores de lectura/escritura de la tuberia
	//Si recibimos parametros
	if (argc>1) {
		//Asignamos el valor del parametro 1 a la variable n
		n=atoi(argv[1])-1;
		pipe(tuberia); //Creamos la tuberia anonima
	}
	pid_t hijo=0;  //Variable que almacena el retorno de la función fork
	for (i=1; i<=n; i++) {
		//Siempre que creamos un hijo salimos del bucle for
	   	if ( hijo = fork() )
		{	
        	break;
		}
	}
	//Esperamos a que todos los procesos que hay por debajo finalicen
	wait(NULL);
	if(i<=n)  
		{	
		//Redirigimos la entrada estandar en todos los procesos
		//menos la del ultimo hijo
		dup2(tuberia[0], STDIN_FILENO);		
		}
	if (i!=1)
	{
		//Redirigimos la salida estandar de todos los hijos
		//menos la del padre
		dup2(tuberia[1], STDOUT_FILENO);
	}
	//Cerramos descriptores de la tuberia
	close(tuberia[0]);
	close(tuberia[1]);

	execl("./p3a","p3a",NULL);
	perror("Error al ejecutar p3a");	
	exit(0);

}
